Recette n 35 Intgrer le SDK AdMob dans un projet
Page 103

Permissions spcifiques  notre application :
<permission android:name="com.example.cookbook_notification.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.cookbook_notification.permission.C2D_MESSAGE" />

Permission gnrales :
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />



<receiver
  android:name="com.google.android.gcm.GCMBroadcastReceiver"
  android:permission="com.google.android.c2dm.permission.SEND" >
 <intent-filter>
   <action android:name="com.google.android.c2dm.intent.RECEIVE" />
   <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
   <!-- Utilis pour les API < 16. -->
   <category android:name="com.example.cookbook_notification" />
 </intent-filter>
</receiver>



import com.google.android.gcm.GCMRegistrar;

public class MainActivity extends Activity {
   private static final String SENDER_ID = "XXXXXXXXXXXX";

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      GCMRegistrar.checkDevice(this);
      GCMRegistrar.checkManifest(this);

      final String regId = GCMRegistrar.getRegistrationId(this);
      if (regId.equals(""))
      {
         GCMRegistrar.register(this, SENDER_ID);
      }

      if (GCMRegistrar.isRegistered(this)) {
          Log.d("GCM", "Enregistrement : " + GCMRegistrar.getRegistrationId(this));
      }
   }
}

   

   @Override
   protected void onError(Context arg0, String arg1) {
      /*
       * Appele quand le priphrique essaye de s'inscrire ou se dsinscrire
       * et que le GCM retourne une erreur.
       */
      Log.d("GCM", "Erreur GCM : " + arg1.toString());
      
   }

   @Override
   protected void onMessage(Context arg0, Intent arg1) {
      Log.d("GCM", "Message GCM reu : " + arg1.getStringExtra("message"));

      sendNotification(arg0, arg1.getStringExtra("message"));
   }

   @Override
   protected void onRegistered(Context arg0, String arg1) {
      Log.d("GCM", "Inscription GCM : " + arg1.toString());
   }

   @Override
   protected void onUnregistered(Context arg0, String arg1) {
      Log.d("GCM", "Dsinscription GCM : " + arg1.toString());
   }

   public void sendNotification(Context context, String message) {
      Intent intent = new Intent(this, ReceiverActivity.class);
      PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

      Notification notification = new Notification.Builder(this)
          .setContentTitle("Push GCM")
          .setContentText(message).setSmallIcon(R.drawable.ic_launcher)
          .setContentIntent(pIntent).build();

      NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
      notification.flags |= Notification.FLAG_AUTO_CANCEL;
      notificationManager.notify(0, notification);
   }

}
